<?php

/*
  | --------------------------------------------------------------------------------------------------
  | <agenda_model>
  |
  | Desenvolvedor:	Eduardo Sirangelo
  | E-mail:		sirangelos@ibest.com.br
  | Descrição:
  |	-
  | Quality is Everyting
  | --------------------------------------------------------------------------------------------------
 */
class Agenda_model extends Model {

    function Agenda_model()
    {
        // Chama o construtor do Model
        parent::Model();
    }
    
    function get_agendamentos_by_day($date_start,$date_end,$id_empresa) {
        
        $where          = "id_empresa = $id_empresa AND dt_inicio_agendamento BETWEEN '" . $date_start . "' AND '" . $date_end . "'";
        
        $this->db->select("*");
        $this->db->from("tab_agendamento");
        $this->db->where($where);
        $this->db->order_by("dt_inicio_agendamento"); 
        return $this->db->get();
        
    }
    
    function get_agendamento_by_where($where) {
        $this->db->order_by("dt_inicio_agendamento");
        return $this->db->get_where("tab_agendamento",$where);
    }
    
    /**
     * CLIENTE POR ID - Busca clientes baseado em parte do ID do cliente
     * @param <varchar> $q
     * @return <query> 
     */
    function get_cliente_by_id($q,$idEmpresa) {
        
        $query = $this->db->query("SELECT * FROM tab_clientes WHERE CAST(id_cliente as VARCHAR) LIKE '%$q%' AND id_empresa = $idEmpresa ORDER BY id_cliente");
        return $query;
    }
    
    /**
     * CLIENTE POR NOME - Busca clientes baseado em parte do nome do cliente
     * @param <varchar> $q
     * @return <query> 
     */
    function get_cliente_by_name($q,$idEmpresa) {
        
        $query = $this->db->query("SELECT * FROM tab_clientes WHERE (nome_cliente_nome_fantasia LIKE '%$q%' OR razao_social LIKE '%$q%') AND id_empresa = $idEmpresa ORDER BY nome_cliente_nome_fantasia");
        return $query;
    }
    
    /**
     * SETAR CLIENTE POR ID OU POR PARTE DO NOME FANTASIA OU RAZAO SOCIAL
     * @param <VARCHAR> $tipo
     * @param <UNDEFINED> $q
     * @return <QUERY> 
     */
    function set_cliente($tipo,$q) {
        
        if($tipo == "id_cliente") {
            
            return $this->db->get_where("tab_clientes",array("id_cliente" => "$q", "id_empresa" => $this->session->userdata('id_empresa')));
            
        } elseif($tipo == "nome_cliente") {
            
            $this->db->like("nome_cliente_nome_fantasia","$q");
            $this->db->or_like("razao_social","$q");
            $this->db->where(array("id_cliente" => "$q", "id_empresa" => $this->session->userdata('id_empresa')));
            return $this->db->get("tab_clientes");
            
        }
    }
    
    function get_profissional_especialidade($where) {
        $this->db->order_by("id_profissional");
        return $this->db->get_where("tab_rel_profissional_especialidade",$where);
    }
    
    function get_servicos_agendados_by_dia($date_start,$date_end,$id_empresa) {
        return $this->db->query("SELECT tab_agendamento.id_servico, COUNT(tab_agendamento.id_servico) AS total,servico FROM tab_agendamento INNER JOIN tab_servicos ON tab_servicos.id_servico = tab_agendamento.id_servico WHERE  tab_agendamento.id_empresa = $id_empresa AND dt_inicio_agendamento BETWEEN '" . $date_start . "' AND '" . $date_end . "' GROUP BY tab_agendamento.id_servico,tab_servicos.servico");
    }
    
    function check_agendamento_by_where($where) {
        $this->db->order_by("dt_inicio_agendamento");
        return $this->db->get_where("tab_agendamento",$where);
    }
    
    function return_profissional_by_id($id,$num_words) {
        $query = $this->db->get_where("tab_profissionais",array("id_profissional" => $id));
        $row   = $query->row();
        return word_limiter($row->nome_profissional,$num_words,"");
    }
    
    function return_horario_servico_by_id($id,$data_start) {
        
        $query = $this->db->get_where("tab_servicos",array("id_servico" => $id));
        $row   = $query->row();
        
        $data_end = date("Y-m-d H:i:s",strtotime("+$row->tp_servico minutes",strtotime($data_start)));
        
        return $this->functions->returnHoraMinuto($data_start) . " - " . $this->functions->returnHoraMinuto($data_end);
    }
    
    function return_servico_by_id($id_servico,$id_empresa) {
        $query = $this->db->get_where("tab_servicos",array("id_servico" => $id_servico,"id_empresa" => $id_empresa));
        $row   = $query->row();
        return $row->servico;
    }
    
    function insert_agendamento($data) {
        //Inicia transação
        $this->db->trans_begin();
        
        foreach($data as $data0) {
            $this->db->insert('tab_agendamento', $data0);
        }
        
        if ($this->db->trans_status() === FALSE) {
            
            $this->db->trans_rollback();
            return 0;
            
        } else {
            
            $this->db->trans_commit();
            return 1;
            
        }
    }
    
    function update_agendamento($data,$where) {
        
        //Inicia transação
        $this->db->trans_begin();
        
        foreach($data as $data0) {
            $this->db->update('tab_agendamento', $data0,$where);
        }
        
        if ($this->db->trans_status() === FALSE) {
            
            $this->db->trans_rollback();
            return 0;
            
        } else {
            
            $this->db->trans_commit();
            return 1;
            
        }
        
    }
    function delete_agendamento($where) {
        
        $this->db->trans_begin();
        
        $this->db->delete('tab_agendamento', $where);
        
        if ($this->db->trans_status() === FALSE) {
            
            $this->db->trans_rollback();
            return 0;
            
        } else {
            
            $this->db->trans_commit();
            return 1;
            
        }
    }
    
}
?>
